//
//  BuddyListPacketProcess.h
//  HiQ
//
//  Created by shoguncao on 12-8-7.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>

#define QQ_NUM_LEN              0x000A  // QQ号码的最大长度
#define OP_BUDDY_LIST_REQUEST   0x0000  // 好友列表查询操作
#define OP_BUDDY_LIST_REPLY     0x0001  // 好友列表响应操作

#define ERR_NO_ERROR            0x0000  // 查询数据库无错误

#define ERR_NO_BUDDY            0x0001
#define ERR_TBFRIENDS_USERID    0x0002  // tbRriends 中的 UserId 字段无法获得
#define ERR_TBUSER_USER         0x0003  // tbUser 中未找到 UserId 对应的 User
#define ERR_TBUSER_USERNAME     0x0004  // tbUser 中可找到 UserId 对应的 User，但找不到 UserName 字段
#define ERR_TBUSER_USERIMAGE    0x0005  // tbUser 中可找到 UserId 对应的 User，但找不到 UserImage 字段

#define ReloadBuddyListNotification @"ReloadBuddyListNotification"

#pragma pack(1)
typedef struct
{
    NSInteger type;                 // 包类型
    NSInteger operation;            // 操作类型
    NSInteger qq_num;    // 发包的QQ号码
} BUDDYLISTREQUESTHRD;
#pragma pack()

#pragma pack(1)
typedef struct
{
    NSInteger type;                 // 包类型
    NSInteger operation;            // 操作类型
    NSInteger error;                // 错误类型，若无错误，则此字段是 ERR_NO_ERROR(0x0000)，否则后面的字段没有解析的必要了
    NSInteger count;                // 好友数目
    NSInteger userid_len;           // UserId 占用的字节数
    NSInteger username_len;         // UserName 占用的字节数
    NSInteger userimage_len;        // UserImage 占用的字节数
    NSInteger userstatus_len;       // UserIsOnline 占用的字节数
    NSInteger userlistenport_len;   // UserListenPort 占用的字节数
    NSInteger userip_len;           // userip 占用的字节数
    //... 要发的 UserId 和 UserName 直接接在这儿进行发送，先是 UserId，再发 UserName
} BUDDYLISTREPLYHRD;
#pragma pack()

@interface BuddyListPacketProcess : NSObject

- (void)onReceiveBuddyListPacket:(NSData *)data;    // 接到 BuddyList 查询的回复包时的处理
- (void)onGetBuddyList; // 向服务器发送 BuddyList 拉取请求
- (NSString *)convertQQNumToString:(NSInteger)qqNum;    // 把 NSInteger 的qq号转换为 NSString 的

@end
